#ifndef SingleNode_h
#define SingleNode_h

namespace TL {
    template<class T> class SingleNode {
    private:
        T m_Data;
        SingleNode *m_Next;

    public:
        SingleNode()
        {
            m_Data = T();

            m_Next = 0;
        }
        SingleNode(const T &data)
        {
            m_Data = data;

            m_Next = 0;
        }
        SingleNode(const T &data, SingleNode *next_node)
        {
            m_Data = data;

            m_Next = next_node;
        }

        T &GetData()
        {
            return m_Data;
        }
        const T &GetData() const
        {
            return m_Data;
        }
        SingleNode *GetNext() const
        {
            return m_Next;
        }
        void SetData(const T &data)
        {
            m_Data = data;
        }
        void SetNext(SingleNode *next_node)
        {
            m_Next = next_node;
        }
    };
}

#endif
